GICv3: Allow probe for fewer GICR interfaces than exposed by the frame
authorSoby Mathew <[email protected]>
Thu, 17 Jan 2019 14:57:54 +0000 (14:57 +0000)
committerSoby Mathew <[email protected]>
Mon, 4 Feb 2019 15:42:36 +0000 (15:42 +0000)
Previously the GICv3 redistributor probe function
(gicv3_rdistif_base_addrs_probe()) asserted that the number of
per-CPU redistributor interfaces expected to be probed by the
platform is equal to the number exported by the redistributor
frame. This is a problem in case the number of CPUs in the
platform is less than the number of redistributor interfaces
in the frame. Hence this patch removes the assertion check
and allows probe for fewer redistributor interfaces as required
by the platform.

Change-Id: I3449763a3ad70817224442cbe184d001030c9874
Signed-off-by: Soby Mathew <[email protected]>
drivers/arm/gic/v3/gicv3_helpers.c

index 39ea2a374659eac5ed9da9a07922afb76d66ce05..710532e3c8b039ac2d30f41ab58c716e3dae741e 100644 (file)
@@ -341,8 +341,10 @@ void gicv3_rdistif_base_addrs_probe(uintptr_t *rdistif_base_addrs,
                        proc_num = (typer_val >> TYPER_PROC_NUM_SHIFT) &
                                TYPER_PROC_NUM_MASK;
                }
-               assert(proc_num < rdistif_num);
-               rdistif_base_addrs[proc_num] = rdistif_base;
+
+               if (proc_num < rdistif_num)
+                       rdistif_base_addrs[proc_num] = rdistif_base;
+
                rdistif_base += (1U << GICR_PCPUBASE_SHIFT);
        } while ((typer_val & TYPER_LAST_BIT) == 0U);
 }